package cl.portal.escolares.action;

import java.util.HashMap;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.ServletActionContext;

import cl.portal.escolares.DAO.DAOColegio;
import cl.portal.escolares.DAO.DAOCurso;
import cl.portal.escolares.DAO.DAOHorario;
import cl.portal.escolares.DAO.DAOUsuario;
import cl.portal.escolares.domain.Colegio;
import cl.portal.escolares.domain.Curso;
import cl.portal.escolares.domain.Horario;
import cl.portal.escolares.domain.Usuario;

import com.opensymphony.xwork2.ActionSupport;

public class ColegioEditAction extends ActionSupport {
	private static final long serialVersionUID = 1L;
	private static Log _log = LogFactory.getLog(ColegioEditAction.class);

	private Usuario usuario;
	private Colegio colegio;
	private List<Curso> cursos;
	private String okMessage = "";
	private String errorMessage = "";
	private List<Horario> horarios;
	private HashMap<Long, String> horariosMap;

	public String execute() throws Exception {
		try {
			HttpServletRequest request = ServletActionContext.getRequest();
			Long usuarioId = request.getParameter("usuarioId") != null ? Long
					.valueOf(request.getParameter("usuarioId")) : 0L;
			if (usuarioId != null && usuarioId > 0)
				setUsuario(DAOUsuario.get(usuarioId));
			else
				setUsuario(DAOUsuario.get(usuario.getUsuarioId()));
			Long colegioId = request.getParameter("colegioId") != null ? Long
					.valueOf(request.getParameter("colegioId")) : 0L;
			setColegio(DAOColegio.get(colegioId));

			setCursos(DAOCurso.list(colegioId, true));
			setHorarios(DAOHorario.list(colegioId, true));

			horariosMap = new HashMap<Long, String>();
			for (Horario horario : horarios)
				horariosMap.put(
						horario.getHorarioId(),
						horario.getHoraEntrada() + " - "
								+ horario.getHoraSalida());
			setHorariosMap(horariosMap);
			setOkMessage("");
			setErrorMessage("");

			return "success";
		} catch (Exception e) {
			_log.error(e);
			setOkMessage("");
			setErrorMessage("Ha ocurrido un error inesperado, contacte al administrador de sistema si persiste el error.");
			addActionError(getText("error.login"));
			return "error";
		}
	}

	public static Log get_log() {
		return _log;
	}

	public static void set_log(Log _log) {
		ColegioEditAction._log = _log;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public Colegio getColegio() {
		return colegio;
	}

	public void setColegio(Colegio colegio) {
		this.colegio = colegio;
	}

	public List<Curso> getCursos() {
		return cursos;
	}

	public void setCursos(List<Curso> cursos) {
		this.cursos = cursos;
	}

	public String getOkMessage() {
		return okMessage;
	}

	public void setOkMessage(String okMessage) {
		this.okMessage = okMessage;
	}

	public static long getSerialversionuid() {
		return serialVersionUID;
	}

	public String getErrorMessage() {
		return errorMessage;
	}

	public void setErrorMessage(String errorMessage) {
		this.errorMessage = errorMessage;
	}

	public List<Horario> getHorarios() {
		return horarios;
	}

	public void setHorarios(List<Horario> horarios) {
		this.horarios = horarios;
	}

	public HashMap<Long, String> getHorariosMap() {
		return horariosMap;
	}

	public void setHorariosMap(HashMap<Long, String> horariosMap) {
		this.horariosMap = horariosMap;
	}

}
